המינהל למדע וטכנולוגיה הפיקוח על מדעי המחשב עתודה מדעית טכנולוגית מדינת ישראל משרד החינוך המינהל הפדגוגי אגף בכיר בחינות בחינת מפמ ר במדעי המחשב לכיתה ח מודול צד לקוח מאי 2017 אייר תשע ז שם התלמיד/ה: הכיתה: תלמידים יקרים, במבחן שלפניכם שני פרקים: 60 נקודות 40 נקודות פרק ראשון יש לענות על כל השאלות 4-1 פרק שני יש לענות על שתיים מבין השאלות 8-5 סה"כ 100 נקודות קראו בעיון את שאלות המבחן וענו עליהן בתשומת לב. בשאלות שבהן אתם נדרשים לכתוב תשובה, כתבו אותה במקום המיועד לכך. בשאלות שבהן אתם נדרשים לבחור תשובה נכונה אחת מבין כמה אפשרויות, הקיפו בעיגול את התשובה הנכונה. בסוף השאלון מובא סיכום ההוראות של תכנות צד לקוח. בדקו את תשובותיכם ותקנו אותן לפי הצורך לפני מסירת המבחן. משך הבחינה 120 דקות. בהצלחה!
פרק ראשון )60 נקודות( ענו על כל השאלות 1 4. teldan.html שמורת תל דן שאלה )10 1 נק'( לפניכם תצוגה של שני דפי html הנמצאים באותה תיקייה. myparks.html רשות הטבע והגנים לאתר רשות הטבע והגנים לחץ כאן www.parks.org.il שעות פתיחה 9:00-16:00 תמונה dan.jpg שתהווה קישור לדף myparks.html השלימו את קוד המקור ב html עבור שני הדפים הבאים: teldan.html <html> <head> </head> <body dir="rtl"> myparks.html <html> <head> </head> <body dir="rtl"> </body> </html> </body> </html> 2
שאלה )18 2 נק'( לפניכם חמישה קטעי קוד )א-ה(. המטרה של כל קטע קוד היא לקלוט ארבעה ציונים, לחשב את הממוצע שלהם ולהדפיס אותם. בכל קטע קוד נפלה טעות אחת כך שהקטע אינו מבצע את מטרתו. בכל אחד מן הקטעים, הסבירו מה הטעות, ותקנו אותה על גבי קטע הקוד. הערה: הטעות אינה טעות הידור/קומפילציה <script> א הסבר קטע קוד var num = parseint(window.prompt("press a number")); var count = 1, sum = 0; while (count < 4) { num = parseint(window.prompt("press a number")); sum = sum + num; count = count + 1; document.write( sum / count ); </script> <script> ב var m, num, sum ; for (m=1; m <= 4; m++) { num = parseint(window.prompt("press a number")); sum = 0; sum = sum + num; document.write( sum / 4 ); </script> 3
<script> ג הסבר קטע קוד var count = 0, sum = 0; while (count < 4) { num = parseint(window.prompt("press a number")); sum = sum + num; document.write( sum / 4 ); </script> <script> ד var sum = 0, num = 0, m; for (m = 1; m <= 4; m++) { sum = sum + num; num = parseint(window.prompt("press a number")); document.write( sum / 4 ); </script> <script> ה var sum = 0, num = 0, m; for (m = 1; m <= 4; m++) { num = parseint(window.prompt("press a number")); sum = sum + num; document.write( sum / m ); </script> 4
שאלה )14 3 נק'( במסגרת המשחק Zokimon-Amat יכולים שחקנים לצבור נקודות לפי סוג הזוקימון שברשותם. קיימים שלושה סוגי )type( זוקימונים: טיסה,)flying( מים )water( ומתכת.)steel( להלן הניקוד בעבור כל סוג זוקימון: נקודות )points( 100 50 150 סוג )type( טיסה )flying( מים )water( מתכת )steel( לפניכם טופס המאפשר לחשב את מספר הנקודות הסופי ואת רמתו של אספן הזוקימונים - רמה ראשונית או רמה מתקדמת. שיגעון הזוקימון כמות זוקימון טיסה כמות זוקימון מים כמות זוקימון מתכת חישוב מספר הנקודות הסופי רמת האספן רמה ראשונית תוגדר למי שצבר עד 2000 נקודות )כולל(. רמה מתקדמת תוגדר למי שצבר מעל 2000 נקודות וגם ברשותו לפחות 6 זוקימונים מסוג מתכת.)steel( לאחר מילוי הטופס ולחיצה על כפתור 'חישוב' יופיעו בתיבות הטקסט הפלטים הבאים: - מספר הנקודות הסופי - רמת האספן 5
לפניכם קטע קוד חלקי בטופס. הטופס מזמן פעולה לחישוב מספר הנקודות הסופי ורמת האספן. השלימו את החלקים החסרים ב script וב body. <html><head> <script> function calculate() { var zkm_flying = var zkm_water = var zkm_steel = total = if { ;"רמה מתקדמת" = document.getelementbyid("com").value ;"רמה ראשונית" = document.getelementbyid("com").value else </script></head> <body dir = "rtl"> הזוקימון הגיע לישראל< h1 > < h1 />שיגעון 4> = size <input type = "text" id = "flying" value = "" זוקימון טיסה 4> = size <input type = "text" id = "water" value = "" זוקימון מים 4> = size <input type ="text" id = "steel" value = "" זוקימון מתכת <br/> <input type = "button" id ="clac" value = "חישוב" onclick = " "><br/> 4> = size <input type ="text" id = "points" value = "" מספר הנקודות הסופי > "" = value <input type ="text" id = "com" רמת האספן </body></html> 6
שאלה )18 4 נק'( לפניכם קטע קוד ב JavaScript הקולט חמש ספרות )0-9(, מחשב על פי ההוראות ומדפיס את התוצאות: <html><body><script> var m, digit; var result_1 = 0; var result_2 = 0; for (m=1 ; m <= 5 ; m++){ digit = parseint(window.prompt("press a digit")) if (digit % 2 == 0){ result_1= (result_1 * 10 ) + digit; else{ result_2 = result_2 + digit; document.write("<br/>"); document.write("result #1 is " + result_1 + "<br/>") document.write("result #2 is " + result_2) </script></body></html> א. לפניכם טבלה למעקב אחר קטע הקוד. רשמו בטבלה מה יוצג כפלט עבור הקלטים הבאים: 2, 5, 6, 8, 9 )הקלט הראשון 9(. result_1 result_2 m digit פלט 7
ב. רשמו חמש ספרות אשר עבורן יוצגו שני הפלטים הבאים: Result # 1 is 646 Result # 2 is 6 מה תפקידו של המשתנה result_2? הקף בעיגול את התשובה הנכונה. ג. לסכום את כל הספרות i. לסכום את הספרות הזוגיות.ii לסכום את הספרות האי זוגיות.iii לסכום את כל הספרות המתחלקות ב m ללא שארית.iv 8
פרק שני )40 נקודות( ענו על שתי שאלות מבין השאלות 5 8 )לכל שאלה 20 נק (. שאלה 5 לפניכם ארבעה קטעי קוד )א-ד(. המטרה של כל קטע היא להדפיס מלבן כוכביות הבנוי מ 3 שורות ו 5 עמודות, על פי הדוגמה הבאה: ***** ***** ***** בכל קטע קוד נפלה טעות. הסבר בקצרה מה הטעות, או מה יודפס בגלל הטעות. <html><body><script> var k, m; א פלט/הסבר קטע קוד for (k = 1; k <= 3; k++){ for (m = 1; m <= 5; m++){ document.write("*"); </script></body></html> <html><body><script> ב var k, m; for (k = 1; k <= 3; k++) { document.write("*"); for (m = 1; m <= 5; m++) { document.write("*"); document.write("<br/>"); </script></body></html> 9
<html><body><script> ג var k, m; for (k = 1; k <= 5; k++) { for (m = 1; m <= 3; m++){ document.write("*"); document.write("<br />"); </script></body></html> <html><body><script> ד var k, m ; for (k = 1; k <= 3; k++) { for (m = 3; m <= 5; m++){ document.write("*"); document.write("<br />"); </script></body></html> 10
שאלה 6 רשות הטבע והגנים ארגנה יום פעילות ל 400 משפחות, שהכנסותיו קודש לשמירה על הטבע בישראל. ביום זה מוצעות שתי הפעילויות הבאות: - חיזיון אור קולי במחיר 10 ש ח לכרטיס - נסיעה ברכבל במחיר 15 ש ח לכרטיס לפניכם קוד חלקי אשר מטרתו לקלוט את מספר הכרטיסים שרכשה כל אחת מ 400 המשפחות שהוזמנו ליום פעילות זה, לכל אחת משתי הפעילויות )חיזיון אור קולי ונסיעה ברכבל(. על הקוד לחשב ולהדפיס: - את הסכום לתשלום בעבור רכישת הכרטיסים לכל משפחה - את סכום הכסף הכולל שנאסף מכל 400 המשפחות השלימו את החלקים החסרים בקוד: <html><body><script> var pay ; var m, count_1, count_2 ; var total = var m = while ( ) ;(("הכנסת מספר הכרטיסים לחיזיון אור-קולי") parseint(window.prompt count_1 = ;(("הכנסת מספר הכרטיסים לרכבל") parseint(window.prompt count_2 = { pay = total = document.write( ;("הסכום שעל המשפחה לשלם הוא" + document.write("<br/>"); ;("סכום הכסף הכולל שנאסף הוא" + document.write( </script></body></html> 11
שאלה 7 לפניכם קטע קוד בדף html הכולל תגית : canvas <html><body> <h1>what is it</h1> <canvas id="canvasframe" width="400" height="400" style="background-color:blue"></ canvas> <script> var elem = document.getelementbyid('canvasframe'); var ctx = elem.getcontext('2d'); ctx.arc(200,100,100,0,2 * Math.PI,true); ctx.fillstyle = "yellow"; ctx.fill(); ctx.beginpath(); ctx.moveto(50, 150); ctx.lineto(200, 400); ctx.lineto(350, 150); ctx.moveto(50, 150); ctx.fillstyle = 'orange'; ctx.fill(); ctx.closepath(); </script> </body></html> באיור לשאלה 7 )בעמוד הבא( מוצג רקע משובץ ובו גבולות ה canvas. מידות כל משבצת הן. 50 # 50 ציירו על המשבצות את הציור המתקבל לאחר הרצת קוד ה html. אין צורך לצבוע בצבעים, אך יש לציין את שמות הצבעים. 12
x:0 y:0 x:400 y:0 x:0 y:400 x:400 y:400 איור לשאלה 7 13
שאלה 8 רוני פיתחה יישומון לאחיה הקטן כדי ללמדו להשתמש בעכבר המחשב. לשם כך כתבה רוני קטע קוד המציג במסך שני ריבועים שחורים על רקע לבן, כמתואר באיור לשאלה זו. אורך הצלע של כל ריבוע הוא 50 פיקסלים. מיקום הריבועים מוכנס למשתנים הגלובליים.)x1,y1),(x2,y2( הקלקה על כל ריבוע תעלים אותו )האזור של הריבוע שהקליקו עליו ייצבע בלבן(. בהקלקה על כל אזור אחר תופיע הודעה square!' 'You should press inside the הערה: הריבועים אינם חופפים במיקומם, כלומר הם במקומות שונים במסך. - square_size צלע של כל ריבוע באורך 50 פיקסלים - x1, y1 מיקום ריבוע ראשון - x2, y2 מיקום ריבוע שני איור לשאלה 8 14
לפניכם קטע קוד חלקי עבור היישומון של רוני. השלימו את ההוראות החסרות בו: <script> function quiz(event) { event = event window.event; var ctt = document.getelementbyid('canvasframe'); var xm = event.pagex - ctt.offsetleft; var ym = event.pagey - ctt.offsettop; if ( xm >= x1 && (xm <= ( )) && (ym >= y1 && ym <= (y1 + square_size))) { ctx.fillstyle = ; ctx.fillrect ; else if ( xm >= x2 && (xm <= (x2 + square_size)) && (ym >= y2 && ym <= (y2 + square_size))) { ctx.fillstyle = ; ctx.fillrect ; else { alert('you should press inside the square!') </script> בהצלחה! 15
המשך בעמוד הבא. 16
17